
[dbo].[asi_SalesTeamChangeRange]
CREATE PROCEDURE [dbo].[asi_SalesTeamChangeRange]
@salesTeamKey uniqueidentifier,
@oldStartDate DateTime,
@newStartDate DateTime,
@userKey uniqueidentifier
AS
SET NOCOUNT ON
IF (SELECT Count(*) FROM GroupMemberDetail WHERE GroupKey = @salesTeamKey) < 1
BEGIN
SELECT -1
RETURN -1
END
IF (SELECT Count(*) FROM GroupMemberDetail WHERE GroupKey = @salesTeamKey AND EffectiveDate = @oldStartDate) < 1
BEGIN
SELECT -2
RETURN -2
END
IF (
(SELECT DATEADD(day,1,MAX(EffectiveDate)) FROM GroupMemberDetail WHERE GroupKey = @salesTeamKey AND EffectiveDate < @oldStartDate) < @newStartDate
OR (SELECT DATEADD(day,1,MAX(EffectiveDate)) FROM GroupMemberDetail WHERE GroupKey = @salesTeamKey AND EffectiveDate < @oldStartDate) IS NULL
)
AND
(
@newStartDate < (SELECT DISTINCT ExpirationDate FROM GroupMemberDetail WHERE GroupKey = @salesTeamKey AND EffectiveDate = @oldStartDate)
OR (SELECT DISTINCT ExpirationDate FROM GroupMemberDetail WHERE GroupKey = @salesTeamKey AND EffectiveDate = @oldStartDate) IS NULL
)
BEGIN
BEGIN TRANSACTION
UPDATE GroupMemberDetail SET ExpirationDate = DATEADD(day,-1,@newStartDate), UpdatedOn = GetDate(), UpdatedByUserKey = @userKey
WHERE GroupKey = @salesTeamKey AND EffectiveDate = (SELECT MAX(EffectiveDate) FROM GroupMemberDetail WHERE GroupKey = @salesTeamKey AND EffectiveDate < @oldStartDate)
UPDATE GroupMemberDetail SET EffectiveDate = @newStartDate, UpdatedOn = GetDate(), UpdatedByUserKey = @userKey
WHERE GroupKey = @salesTeamKey AND EffectiveDate = @oldStartDate
SELECT 0
COMMIT
END
ELSE
BEGIN
SELECT -2
RETURN -2
END
SET NOCOUNT OFF
GO